package com.example.maruko_course_backend.services;

import com.example.maruko_course_backend.criterias.PageConditionCriteria;
import com.example.maruko_course_backend.criterias.PageCriteria;
import com.example.maruko_course_backend.criterias.SentenceCriteria;
import com.example.maruko_course_backend.criterias.SentenceKnowledgeCriteria;
import com.example.maruko_course_backend.dto.EditedWord;
import com.example.maruko_course_backend.dto.PageDto;
import com.example.maruko_course_backend.dto.SentenceDto;
import com.example.maruko_course_backend.entity.Sentence;
import com.example.maruko_course_backend.vo.SentenceKnowledgeVo;
import com.example.maruko_course_backend.vo.SentenceModifiedVo;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface SentenceService {
  Sentence saveSentence(Sentence sentence);
  List<Map> getListByExcel(InputStream is, String fileName) throws IOException;
  Boolean batchImportSentences(List<Map> sentences);
  SentenceKnowledgeVo findVoBySentenceKnowledgeCriteria(SentenceKnowledgeCriteria criteria);
  Sentence findSentenceBySentenceCriteria(SentenceKnowledgeCriteria criteria);
  PageDto<SentenceDto> findAllSentenceDtosByPage(PageCriteria pageCriteria);
  PageDto<SentenceDto> findAllSentenceDtosByPageCondition(PageConditionCriteria<SentenceCriteria> pageConditionCriteria);
  SentenceModifiedVo findSentenceModifiedVo(String videoNum, String sentenceSeq);
  Sentence saveOrModifyWord(String videoNum, String sentenceSeq, EditedWord editedWord);
  String deleteWord(String videoNum, String sentenceSeq, String editedWordContent);
}
